﻿#pragma once

class Box;

// 基本游戏物体
class BaseGameObject {
    // 移动结果
    public: enum MoveResult {
        CANNOT_MOVE,        // 本身不具有移动能力
        NO_MOVE,            // 没有移动
        NORMAL_MOVED,       // 正常移动
        ARRIVED_ON_DEST,    // 移动到目标上
        LEFT_FROM_DEST      // 离开目标
    };

    // 类型
    public: enum Type {
        NOTHING,        // 什么也没有
        WALL,           // 墙
        BACKGROUND,     // 背景
        DESTINATION,    // 箱子的目的地
        BOX,            // 箱子
        MAN             // 小人
    };

    protected: HDC mDrawer;     // 绘图者
    protected: CImage mImage;   // 图片
    protected: Type mType;      // 类型
    protected: int mX;          // 横向坐标
    protected: int mY;          // 纵向坐标

    public: BaseGameObject(HDC, Type, int ,int);
    public: virtual ~BaseGameObject();
    public: void Draw();
    public: Type GetType();
    public: virtual BaseGameObject* Move(UINT, MoveResult*);
};
